import os

# SConstruct for dtl examples

env   = Environment(CPPPATH='..')
debug = ARGUMENTS.get('debug', 'n')
if debug == 'y' or debug == 'yes':
    env.Append(CPPFLAGS = ['-Wall', '-g'])
else:
    env.Append(CPPFLAGS = ['-Wall', '-O2'])

if os.sys.platform != "win32":
    env.Append(CPPDEFINES = ['HAVE_UNISTD_H'])

conf = Configure(env);

if not conf.CheckCXX():
    print("The C++ compiler is not installed!")
    Exit(1)

libs = ['stdc++']
for lib in libs:
    if not conf.CheckLib(lib):
        print("library " + lib + " not installed!")
        Exit(1)

conf.Finish()

targets = { 'strdiff'         : ['strdiff.cpp',         'common.cpp'], # diff between two string sequences
            'intdiff'         : ['intdiff.cpp'],                       # diff between two integer sequences
            'unidiff'         : ['unidiff.cpp',         'common.cpp'], # unified diff between two files
            'unistrdiff'      : ['unistrdiff.cpp',      'common.cpp'], # unified diff between two strings
            'bdiff'           : ['bdiff.cpp',           'common.cpp'], # diff between two byte sequences
            'strdiff3'        : ['strdiff3.cpp',        'common.cpp'], # three-way string diff program using dtl
            'intdiff3'        : ['intdiff3.cpp'],                      # three-way integer diff program using dtl
            'patch'           : ['patch.cpp',           'common.cpp'], # string patch program using dtl
            'fpatch'          : ['fpatch.cpp',          'common.cpp'], # file patch program using dtl
            'st2ses'          : ['st2ses.cpp',          'common.cpp'], # convert SES format file to SES instance
            'strdiff_cp'      : ['strdiff_cp.cpp',      'common.cpp'], # diff between two string sequences with custom printer
            'strdiff_storage' : ['strdiff_storage.cpp', 'common.cpp'], # diff between two string sequences with custom storage
            }

[ env.Program(target, targets[target]) for target in targets ]
